package pl.edu.amu.kino.kardamon.engine;

import java.util.Vector;

public class Miasto {

    private static Miasto uniqueInstance;
    private Przystanek przystanek = null;
    private Linia linia = null;

    private Miasto() {
        Baza.getInstance();
    }

    public static Miasto instance() {
        if (uniqueInstance == null) {
            uniqueInstance = new Miasto();
        }
        return uniqueInstance;
    }

    public Vector getPrzystanki() {
        return Baza.getInstance().getListeNazwPrzystankow();
    }

    public Vector getPrzystankiNaLinii(String kierunek) {
        przystanek = null;
        linia.setKonc(kierunek);
        linia.setId(Baza.getInstance().getIdLinii(linia.getNazwa(), linia.getKonc()));
        return Baza.getInstance().getListePrzystankowNaLinii(linia.getId());
    }

    public Vector getLinie() {
        return Baza.getInstance().getListeLinii();
    }

    public Vector getLiniePrzystanku(String nazwaPrzystanku) {
        Vector linieList = new Vector();
        przystanek = Rozklad.getPrzystanek(nazwaPrzystanku);
        Vector linie = przystanek.getLinie();
        boolean jest = false;
        String nazwa = ((Linia) (linie.elementAt(0))).getNazwa();
        for (int i = 0; i < linie.size(); i++) {
            if (!nazwa.equals(((Linia) (linie.elementAt(i))).getNazwa())) {
                nazwa = ((Linia) (linie.elementAt(i))).getNazwa();
                jest = false;
            }
            if (jest == false) {
                linieList.addElement(nazwa);
                jest = true;
            }
        }
        return linieList;
    }

    public Vector getLiniaKierunki(String nazwaLinii, int lol) {
        Vector kierunki = new Vector();
        if (lol == 1) {
            for (int i = 0; i < przystanek.getLinie().size(); i++) {
                if (((Linia) przystanek.getLinie().elementAt(i)).getNazwa().equals(nazwaLinii)) {
                    kierunki.addElement(((Linia) przystanek.getLinie().elementAt(i)).getKonc());
                }
            }
        } else {
            kierunki = Baza.getInstance().getKierunkiLinii(nazwaLinii);
        }
        linia = new Linia();
        linia.setNazwa(nazwaLinii);
        return kierunki;
    }

    public Vector[] getOdjazdyLiniiNaPrzystanku(String nazwaPrzystanku, String kierunek) {
        if (nazwaPrzystanku != null) {
            przystanek = Rozklad.getPrzystanek(nazwaPrzystanku);
        }
        if (kierunek != null) {
            linia.setKonc(kierunek);
            linia.setId(Baza.getInstance().getIdLinii(linia.getNazwa(), linia.getKonc()));
        }
        return Rozklad.getTablicaRozkladu(linia, przystanek);
    }

    public String getWybranyPrzystanek() {
        if (przystanek != null) {
            return przystanek.getNazwa();
        } else {
            return null;
        }
    }

    public String getWybranyKierunek() {
        if (linia != null) {
            return linia.getKonc();
        } else {
            return null;
        }
    }

    public String getWybranaLinia() {
        if (linia != null) {
            return linia.getNazwa();
        } else {
            return null;
        }
    }

    public static Trasa routeGenerate(String pocz, String kon) {
        return null;
    }

}

